package com.sky.mapper;

import com.github.pagehelper.Page;
import com.sky.annotation.AutoFill;
import com.sky.dto.DishPageQueryDTO;
import com.sky.entity.Dish;
import com.sky.enumeration.OperationType;
import com.sky.vo.DishVO;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface DishMapper {

  // 测试get注解，可以随便删除
  /**
   * 分类id查询关联菜品数量
   * @param id
   * @return
   */
  @Select("select count(0) from dish where category_id = #{id}")
  Integer countByCategoryId(Integer id);

  /**
   * 保存菜品
   * @param dish
   */
  @AutoFill(OperationType.INSERT)
  void insert(Dish dish);

  /**
   * 菜品分页查询
   * @param dto
   * @return
   */
  Page<DishVO> pageQuery(DishPageQueryDTO dto);

  /**
   * 根据 id 批量查询 Dish
   * @param ids
   * @return
   */
  List<Dish> getByIds(List<Long> ids);

  /**
   * 根据菜品id批量删除
   * @param dishIds
   */
  void deleteByDishIds(List<Long> dishIds);

  /**
   * 更新菜品信息
   * @param dish
   */
  @AutoFill(OperationType.UPDATE)
  void update(Dish dish);
}
